/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package cl.dfg.twittersneps;
import cl.dfg.twittersneps.modelo.Diccionario;
import cl.dfg.twittersneps.types.STweet;
import cl.dfg.twittersneps.types.SLimit;
import cl.dfg.twittersneps.types.SDeletion;
import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;

/**
 *
 * @author Guillermo
 */
public class MyTwitterHandler implements TwitterStreamHandler {

    Estadistica estadistica = new Estadistica();
    TwittersnepsApp snep;
    FileRW file = new FileRW();

    public void addTweet(STweet t) {
        try {
// Preparando strings para transferencia a SNePS (Daniel)
            
            String when = "\""+t.getCreatedAt()+"\"";
            String who = "\""+t.getUser().getScreenName()+"\"";
            String where = "\""+t.getGeo()+"\"";
            String what = "\""+t.getText()+"\"";
            String relevance = "1";
            String s = when + "," + who + "," + where + "," + what + "," + relevance;

// Mostrando tweet
            //System.out.println(what);
            snep.view.newMessage(who);
            file.escribirTweets(what);

            TwittersnepsView.jTextPane1.setText(TwittersnepsView.jTextPane1.getText()+what+"\n");

 // Hacer taggeado de los tweet
       
            

 // Procesando tweet para estadìstica de estructuras
            estadistica.buscarEstructuras(t.getText());
            
 // Debe agregar estructuras a tabla de estructuras actualizando los contadores que corresponda y desplegar la informaciòn en Panel Stats.

 // Filtrando mensajes no relevantes (Franco)


// Ej: Si la regla fuera solo mensajes que digan "temblor en x", "el temblor", "un temblor"
            String[] rules = {"temblor en ","el temblor","un temblor", "temblor grado"};
            int size = rules.length;
            for (int i=0; i<size; i++)
            {
               if (what.toUpperCase().contains(rules[i].toUpperCase())) {
// Filtrando reweets por el momento
                   if(!what.toUpperCase().contains("RT @")){
//Enviando a SNePS via JavaSNePS API Tweet(when who where what support)
                       //TwittersnepsView.jTextPane1.setText("Tweet encontrado");
                   TwittersnepsView.api.tell("Tweet(" + s + ").");
                   break;
                   }
                else {}
               }
            };
//Accesando la KB para comprobar la transferencia
            //System.out.println(TwittersnepsView.api.ask("Tweet("+when+",?who,?where,?what,?relevance)"));
            TwittersnepsView.jTextPane4.setText(
                    TwittersnepsView.jTextPane4.getText()+
                    TwittersnepsView.api.ask("Tweet("+when+",?who,?where,?what,?relevance)").toString()+"\n");

 
//Analizando mensaje para GenLex y GenGram (franco)

// Parseando componentes del mensaje (franco)




        } catch (Exception ex) {
            Logger.getLogger(MyTwitterHandler.class.getName()).log(Level.SEVERE, null, ex);
        }

    }

    public void addLimit(STweet l) {
        System.out.println("LIMIT! " + l.toString());
    }

    public void addDeletion(SDeletion d) {
        System.out.println("DELETION! " + d.toString());
    }

    public void stop() {
        System.out.println("Stopped.");
    }

    public void addLimit(SLimit l) {
        throw new UnsupportedOperationException("Not supported yet.");
    }



}
